iT邦幫忙

2024 iThome 鐵人賽

DAY 23
1
Modern Web

Rive 的理論與實務系列 第 23

[Day 23] 進階問題:滑點

  • 分享至 

  • xImage
  •  

滑點是一個非常不直覺,但是無論如何一定會存在,沒有方法可以迴避的問題。在大部分的網頁應用中,很少要求前後端的資料要非常即時的同步,所以不太會有這個問題。就我們用 Rive 做遊戲動畫的經驗來說,這可能會讓工程師或 PM 產生一點誤會,進而提出一些無法實現的需求。因此趁這個機會,來解釋一下什麼是滑點問題。

滑點的定義

滑點問題通常出現在外匯或虛擬貨幣的即時報價上,前端跟後端拿最新的報價,顯示在畫面上,但報價是每秒甚至每毫秒在變的,而後端送資料到前端總需要一點時間吧?因此最終使用者看到的報價,一定是一段時間前的報價。

例如使用者看到現在比特幣 30,000 美元,於是下單買進一顆比特幣,這個請求打到後端花了 200 ms,在這短短的 200 ms 內,可能比特幣漲價到 32,000 美元,這其中的差額就是滑點或滑價。

Slippage is the difference between where the computer signaled the entry and exit for a trade and where actual clients, with actual money, entered and exited the market using the computer's signals.

這就是為什麼要有限價單。
https://ithelp.ithome.com.tw/upload/images/20240910/20168679Soh0q5KaBS.png

為什麼滑點不可避免

理解滑點的本質後,應該能理解到幾件事:

  1. 理論上來說,只要資料變更的速度比網路傳輸的速度快,那滑點一定會存在。
  2. 實務上來說,因為外匯與虛擬幣的價格變更太快,所以基本上所有的券商或交易所都會特別註明,滑點是不可避免的,你只能接受他。
  3. 再講得更遠一點,人眼接受到訊息,訊息由人眼睛由神經傳遞到人腦,人腦做出決策後,將決策再經由神經傳遞到四肢做出行動,這之間其實也要一點時間,平均大概 300 ms 左右。
  4. 所以技術上來說,我們眼睛看到的一切,都發生在 200 ms 以前,這也算是一個滑點,這就是為什麼滑點無法避免。

Rive 動畫與滑點的關係

就我們的經驗來說,「眼睛看到的一切都發生在 200 ms 以前」這個概念太不直覺了,而在某些特定的專案或應用程式裡面,可能工程師或 PM 會非常要求前後端的資料一定要一致,不能有誤差否則容易起爭議,特別是跟金融相關的網頁。

例如我們曾經收到一個需求是,要把比特幣的價格用 Rive 動畫顯示在網頁上,做成一個類似心電圖的東西。但因為有滑點問題,再加上動畫渲染也會占用一點時間,所以最終使用者在每一個瞬間看到的價格,一定是幾毫秒以前的價格,如果使用者精明一點拿其他資料來源比對,或者直接請後端工程師拿資料出來比較的話,一定看的到一點誤差,這就是 Rive 動畫遇到的滑點問題。

如同我們剛剛所說的,滑點問題無論是理論上還是實務上,基本上無法避免,所以很多時候我們也只能盡量說服其他工程師或 PM。但後來發現,似乎不是每個人都有滑點的概念,因此除了要花一點時間解釋以外,如果能直接在開需求時就做一點處理,可能會是更好的解決辦法。

再說得更遠一點,Rive 因為讓製作動畫變得非常簡單,所以設計師跟 PM 可能會……比較興奮,盡情地揮灑創意,無論是做出更多更精緻的動畫,或是提出更厲害的需求等等。

這有點像管理學上的彼得定律,一個東西發展到最後,終究會有它的限制,滑點問題就是其中一個,因此與其花太多時間解決這些其他國家或大公司很強的工程師都無法解決的問題,可能適時的認知道他的界線,投資時間與精力在其他部分來提升產品的競爭力,可能會是一個比較划算的選擇。


上一篇
[Day 22] 進階問題:timer
下一篇
[Day 24] 進階問題:Loading Assets
系列文
Rive 的理論與實務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言